//订单列表页面逻辑代码
import {
  getOrders,
  getOrderByPages
} from "../../../api/orderApi"
Page({
  /**
   * 页面的初始数据
   */
  data: {
    active: 0,
    types: ["全部", "待付款", "待收货"], //订单的请求列表
    status: ["all", "waitPay", "waitReceive"],
    currentOrderList: [], //当前显示的订单列表
    windowHeight: getApp().availableWindow.height, //窗口高度
    page: 0, //分页查询的页数(累计)
    isNext:true,//分页查询时是否还有下一页,默认还有下一页
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log("我的订单页面加载:", options);
    console.log(typeof parseInt(options.active));
    this.setData({
      active: parseInt(options.active)
    })
  },

  onShow: function () {
    console.log("--------显示订单列表页面,即将刷新订单列表-----------------");
    //获取当前的订单列表
    this.getCurOrders()
  },

  /**
   * 切换订单类型
   * 需要切换订单列表类型
   */
  cutOrders(e) {
    console.log("切换订单类型", e);
    this.setData({
      active: e.detail.index
    })
    //切换订单类型时需要回复分页查询的页数和订单列表
    this.setData({
      page:0,
      isNext:true,
      currentOrderList:[]
    })
    //切换订单类型时,请求该类型的订单列表
    this.getCurOrders()
    
  },


  /**
   * 监听订单状态改变
   */
  watchOrderChange(e) {
    console.log("订单状态发生了改变！", e);
    // if(e.detail === "requestPayment:ok"){
    //获取当前的订单列表
    this.getCurOrders()
    // }
  },

  /**
   * 进入订单详情页面
   * 需要传入订单的id
   * @param {e} e 
   */
  intoOrderDetail(e) {
    console.log("进入订单详情页面", e);
    wx.navigateTo({
      url: './orderDetails/orderDetails?id=' + e.currentTarget.dataset.id,
    })
  },
  /**
   * 获取当前的订单列表
   */
  getCurOrders() {
    console.log("当前选择的订单状态的索引:", this.data.active);
    //获取当前的订单列表时,先删除之前缓存的订单列表
    this.setData({
      currentOrderList:[],
      page:0
    })
    //如果是请求所有的订单列表,进行分页查询
    if (this.data.active === 0) {
      this.getOrderByPage()
    } else {
      //请求相应的订单列表
      let status = this.data.status[this.data.active]
      console.log("请求的订单列表的类型:", status);
      let refThis = this
      getOrders(status).then((res) => {
        console.log("请求订单列表结果:", res);
        refThis.setData({
          currentOrderList: res.data.currentOrderList
        })
      }).catch((err) => {
        console.log(":请求订单列表出现错误:", err);
        wx.showToast({
          title: '网络异常,请稍后重试',
          icon: 'none'
        })
      })
    }

  },
  /**
   * 没有订单时,进入首页
   */
  intoMain() {
    wx.switchTab({
      url: '/pages/main/index',
    })
  },
  /**
   * 滑动到底部
   */
  scrollButtom() {
    //滑动到底部时,如果是获取所有的订单则分页查询,如果不是不进行分页查询
    console.log("订单列表滑动到了底部",this.data.page,this.data.isNext);
    //如果当前的订单状态为all并且还有下一页时,获取下一页的订单列表
    if (this.data.active===0 && this.data.isNext) {
      console.log("++满足了加载下一页的需求+++");
      this.getOrderByPage()
    }else{
      console.log("不满足分页查询要求");
    }
  },
  /**
   * 分页获取订单列表
   */
  getOrderByPage(){
    getOrderByPages(this.data.page, 8)
        .then(res => {
          console.log("-------------------------分页查询结果:", res);
          this.data.currentOrderList.push(...res.data.currentOrderList)
          let list=this.data.currentOrderList
          console.log("添加后的数据:",list);
          this.setData({
            currentOrderList:list,
          })
          //页数+1,并且设置是否有下一页
          this.setData({
            page:this.data.page+1,
            isNext:res.data.isnext
          })
        })
        .catch(err => {
          console.log("------------------------分页查询失败:", err);
        })
  }
})